package com.wangwei.ram_usage_demo;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

import org.apache.lucene.util.RamUsageEstimator;

import com.sun.org.apache.bcel.internal.generic.NEW;

/**
 * Hello world!
 *
 */
public class App {
    public static void main(String[] args) {

        try {
            BufferedReader in = new BufferedReader(new FileReader("E:\\work\\npp\\temp\\test.txt"));
            String str = in.readLine();
            
            
            /** 方法一 */
            System.out.println("str : " + str);
            System.out.println("getBytes : " + str.getBytes().length);
            
            /** 方法二 */
            // 计算指定对象及其引用树上的所有对象的综合大小，单位字节
            long sizeOf = RamUsageEstimator.sizeOf(str);
            System.out.println("sizeOf : " + sizeOf);
            // 计算指定对象本身在堆空间的大小，单位字节
            long shallowSizeOf = RamUsageEstimator.shallowSizeOf(str);
            System.out.println("shallowSizeOf : " + shallowSizeOf);
            // 计算指定对象及其引用树上的所有对象的综合大小，返回可读的结果，如：2KB
            String humanSizeOf = RamUsageEstimator.humanSizeOf(str);
            System.out.println("humanSizeOf : " + humanSizeOf);
            
            /**方法三*/
            
        } catch (IOException e) {
        }
    }
}
